/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package AplicacionMVC;

/**
 *
 * @author Jesus Ruiz Oliva
 */
import funciones.Cita;
import funciones.Imprime;
import funciones.Medico;
import funciones.Mensaje;
import funciones.PacienteCita;
import funciones.RecibirMail;
import funciones.TipoFormulario;
import java.util.*;
import java.awt.CardLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.io.IOException;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.mail.MessagingException;
import javax.swing.JOptionPane;
import webCam.IniciarCamara;

public class Controller implements ActionListener{
    Vistas ventana;
    ModeloMedicos modeloMedico;  
    ModeloCitas modeloCitas ; 
    ModeloPacientes modeloPacientes;
    ModeloFormulario modeloFormulario;
    ModeloHistorial modeloHistorial=new ModeloHistorial();
    ModeloPruebas pruebas=new ModeloPruebas();
    TipoFormulario tf;
    RecibirMail gestorMail = new RecibirMail();
    MouseAdapter mouseAdapter;   
    Map<String,float[]> map; 
    PacienteCita paciente;
    Medico medico;
    ArrayList<String> arrayFotos = new ArrayList<String>();
    boolean flag = false;
    boolean flag2 = false;
    
    ModeloEstadisticos modeloEstadisticos = new ModeloEstadisticos(); // Crearlo fuera y pasarlo como referencia al constructor
    
        
       
    public Controller( Vistas frame, ModeloMedicos modelo, ModeloPacientes modeloP, ModeloFormulario modeloF) throws SQLException{
           ventana = frame ;
           this.modeloMedico=modelo;
           this.modeloPacientes=modeloP;
           this.modeloFormulario=modeloF;
           modeloCitas = new ModeloCitas(); //crearlo fuera y pasarlo como referencia al constructor
           
           
    }    
         
    @Override
    public void actionPerformed (ActionEvent evento){
      // Panel 1: Login
      if (evento.getSource()==ventana.getButton1()){
            try {
                // Si el usuario y contraseña es correcta continuamos con el siguiente panel
                modeloMedico.conectar();
                if(modeloMedico.existeUsuario(ventana.getUsuario())&& modeloMedico.passValido(ventana.getUsuario(), ventana.getPass())){
                    ventana.setUpColumnaMedicinas(modeloFormulario.getMedicamentos());
                    String idMedico = modeloMedico.getIDMedico(ventana.getUsuario());
                    String[] datos = modeloMedico.getDatosPersonales(ventana.getUsuario());
                    medico = new Medico(idMedico,datos[0],ventana.getPass(),datos[1],datos[2],datos[3],datos[4]);                    
                    ventana.setDatosPersonales( datos);
                    ventana.setListModelCitas(modeloCitas.getCitas(modeloMedico.getIDMedico(ventana.getUsuario())));
                 CardLayout paletas = (CardLayout)ventana.getLayout(); 
                 paletas.show(ventana, "card3");
                }
                //Muestra mensaje de error al logearse
                else ventana.setErrorLogin(); 
                modeloMedico.desconectar();
            } catch (SQLException ex) {
                Logger.getLogger(Controller.class.getName()).log(Level.SEVERE, null, ex);
            }
      }
      if (evento.getSource()== ventana.getButtonExit()){
        System.exit(0);            
      }
      
      // Panel 2: Datos personales y citas
      if (evento.getSource()==ventana.getButton3()){
            try {
                modeloEstadisticos.conectar();
                map = modeloEstadisticos.datosEstadisticos(medico.getIdmedico());
                modeloEstadisticos.desconectar();
            } catch (SQLException ex) {
                Logger.getLogger(Controller.class.getName()).log(Level.SEVERE, null, ex);
            }
           ventana.configHistograma(map,ventana);//BORRAR           
           CardLayout paletas = (CardLayout)ventana.getLayout();            
           paletas.show(ventana, "card5");          
      }
      if (evento.getSource()==ventana.getButton5()){            
            try {
                //gestorMail.abrirConexion(medico.getEmail(),medico.getPass());
                gestorMail.abrirConexion();
                ventana.setListModel(gestorMail.encapsularMensajes());
            } catch (MessagingException ex) {
                Logger.getLogger(Controller.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IOException io){
                Logger.getLogger(Controller.class.getName()).log(Level.SEVERE, null, io); 
            }
          CardLayout paletas = (CardLayout)ventana.getLayout();            
          paletas.show(ventana, "card6");
      }
      if (evento.getSource()== ventana.getButtonLogout()){
          ventana.getPanelDatosCita().setVisible(false);
          CardLayout paletas = (CardLayout)ventana.getLayout();            
          paletas.show(ventana, "card2"); 
      }
      // Panel 3: Paciente
      /*if (evento.getSource()== ventana.getButtonSalirPaciente()){
           CardLayout paletas = (CardLayout)ventana.getLayout();            
           paletas.show(ventana, "card3"); 
      }
      
      if (evento.getSource()== ventana.getButtonAceptarCita()){
           CardLayout paletas = (CardLayout)ventana.getLayout();            
           paletas.show(ventana, "cardFormularioGenerico"); 
      }*/
      
      // Panel 4: Estadisticas
     
      if(evento.getSource()==ventana.getAñoHistograma()){
          float datos[] = map.get((String) ventana.getAñoHistograma().getSelectedItem());
            
            //ventana.setGastosMeses(datos);
            ventana.dibujarHistograma(datos);
            
      }
      if(evento.getSource()==ventana.getHistogramaSalir()){
          CardLayout paletas = (CardLayout)ventana.getLayout();
          paletas.show(ventana,"card3");
      }
      // Panel 5: Correo
      if (evento.getSource()==ventana.getJButton2()){
          gestorMail.pasarPagina();
            try {
                ventana.setListModel(gestorMail.encapsularMensajes());
            } catch (MessagingException ex) {
                Logger.getLogger(Controller.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IOException ex) {
                Logger.getLogger(Controller.class.getName()).log(Level.SEVERE, null, ex);
            }
      }
      if (evento.getSource()==ventana.getJButton1()){
          gestorMail.retrocederPagina();
            try {
                ventana.setListModel(gestorMail.encapsularMensajes());
            } catch (MessagingException ex) {
                Logger.getLogger(Controller.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IOException ex) {
                Logger.getLogger(Controller.class.getName()).log(Level.SEVERE, null, ex);
            }
      } 
      if (evento.getSource()==ventana.getJButton3()){
            try {
                gestorMail.cerrarConexion();
            } catch (MessagingException ex) {
                Logger.getLogger(Controller.class.getName()).log(Level.SEVERE, null, ex);
            }
          CardLayout paletas = (CardLayout)ventana.getLayout();
          paletas.show(ventana,"card3");
      }      
// *******************************  ELIMINADO ****************************      
      // Panel: Motivo  
//      if (evento.getSource()==ventana.getButtonMotivoAtras()){
//          try {
//            ventana.setListModelCitas(modeloCitas.getCitas(modeloMedico.getIDMedico(ventana.getUsuario())));
//          } catch (SQLException ex) {
//            Logger.getLogger(Controller.class.getName()).log(Level.SEVERE, null, ex);
//          }
//                     
//          CardLayout paletas = (CardLayout)ventana.getLayout();
//          paletas.show(ventana,"card3");
//      }
      
//      if(evento.getSource()==ventana.getButtonMotivoCambiar()){
//          ventana.setListModelCambiarMotivo();
//          CardLayout paletas = (CardLayout)ventana.getLayout();
//          paletas.show(ventana,"cardCambiarMotivo");
//      }
      
//      if(evento.getSource()==ventana.getButtonMotivoGuardar()){        
//          autorrellenarFormulario();
//          CardLayout paletas = (CardLayout)ventana.getLayout();
//          paletas.show(ventana,"cardFormularioGenerico");
//      }
// ***************************************************************************
      
      // Panel: Cambiar Motivo
      
      if (evento.getSource()==ventana.getButtonCambiarMotivoAtras()){
          CardLayout paletas = (CardLayout)ventana.getLayout();
          paletas.show(ventana,"cardFormularioGenerico");
      }
            
      // Panel 6: Formulario
      if(evento.getSource()==ventana.getComboBoxTableMedicinas()){
            String elemento = (String) ventana.getComboBoxTableMedicinas().getSelectedItem();
            if(flag){
                try {
                    modeloFormulario.conectar();
                    ventana.setUpColumnaMedicinasMarca(modeloFormulario.getMarca(elemento));
                    modeloFormulario.desconectar();
                } catch (SQLException ex) {
                    ex.printStackTrace();
                }
            }
      }
      if(evento.getSource()==ventana.getButtonCambiarFormulario()){
          ventana.setListModelCambiarMotivo();
          CardLayout paletas = (CardLayout)ventana.getLayout();
          paletas.show(ventana,"cardCambiarMotivo");
      }      
      if(evento.getSource()==ventana.getButtonAgregarAlergia()){
            try {
                modeloFormulario.conectar();
                ventana.setListModelAgregarAlergia(modeloFormulario.getAlergias());
                modeloFormulario.desconectar();
                CardLayout paletas = (CardLayout)ventana.getLayout();
                paletas.show(ventana,"cardAgregarAlergia");
            } catch (SQLException ex) {
                ex.printStackTrace();
            }
      }
      if(evento.getSource()==ventana.getButtonEliminarAlergia()){    
            if(!ventana.getListModelFormularioAlergias().isEmpty()){
                int seleccion = ventana.getJListFormularioAlergias().getSelectedIndex();
                if (seleccion!=-1){
                    String alergia = (String) ventana.getListModelFormularioAlergias().getElementAt(seleccion);
                    ventana.getListModelFormularioAlergias().removeElement(alergia);
                }
            }
      }
      if(evento.getSource()==ventana.getButtonAgregarDiscapacidad()){
            try {
                modeloFormulario.conectar();
                ventana.setListModelAgregarDiscapacidad(modeloFormulario.getDiscapacidades());
                modeloFormulario.desconectar();
                CardLayout paletas = (CardLayout)ventana.getLayout();
                paletas.show(ventana,"cardAgregarDiscapacidad");
            } catch (SQLException ex) {
                ex.printStackTrace();
            }
      }
      if(evento.getSource()==ventana.getButtonEliminarDiscapacidad()){
          if(!ventana.getListModelFormularioDiscapacidades().isEmpty()){
            int seleccion= ventana.getJListFormularioDiscapacidades().getSelectedIndex();
            if (seleccion!=-1){
                String discapacidad = (String) ventana.getListModelFormularioDiscapacidades().getElementAt(seleccion);
                ventana.getListModelFormularioDiscapacidades().removeElement(discapacidad);
            }
          }
      }
      if (evento.getSource()== ventana.getButton_Formulario_Cancelar()){
            try {
                modeloCitas.conectar();
                ventana.setListModelCitas(modeloCitas.getCitas(medico.getIdmedico()));
                modeloCitas.desconectar();
            } catch (SQLException ex) {
                Logger.getLogger(Controller.class.getName()).log(Level.SEVERE, null, ex);
            }
           CardLayout paletas = (CardLayout)ventana.getLayout();            
           paletas.show(ventana, "card3"); 
      }
      
      if (evento.getSource()==ventana.getButton_Formulario_Guardar()){
          String diagnostico = ventana.getTextDiagnostico().getText();
          if(!diagnostico.isEmpty()){
            try{
                modeloFormulario.conectar();
                
                modeloFormulario.insertarDiagnostico(medico.getIdmedico(), paciente.getDNI(), paciente.getNSS(), paciente.getFecha(), diagnostico);
                modeloFormulario.insertarFotos(medico.getIdmedico(), paciente.getDNI(), paciente.getNSS(), paciente.getFecha(), arrayFotos);
                modeloFormulario.insertarMedicinas(ventana.getCampostableModel(ventana.getTableModelMedicinas()),  medico.getIdmedico(), paciente.getDNI(), paciente.getNSS(),paciente.getFecha());
                modeloFormulario.insertarCuras(ventana.getCampostableModel(ventana.getTableModelCuras()),  medico.getIdmedico(), paciente.getDNI(), paciente.getNSS(),paciente.getFecha());
                modeloFormulario.insertarOtros(ventana.getCampostableModel(ventana.getTableModelOtros()),  medico.getIdmedico(), paciente.getDNI(), paciente.getNSS(),paciente.getFecha());
                
                modeloFormulario.insertarTratamientos(ventana.getCampostableModel(ventana.getTableModelTratamientosActuales()),paciente.getDNI(),paciente.getNSS());
                
                modeloFormulario.insertarComentario(paciente.getDNI(),paciente.getNSS(),ventana.getTextComentario().getText());
                modeloFormulario.insertarAlergias(paciente.getDNI(), paciente.getNSS(), ventana.getListModel(ventana.getListModelFormularioAlergias()));
                modeloFormulario.insertarDiscapacidades(paciente.getDNI(), paciente.getNSS(), ventana.getListModel(ventana.getListModelFormularioDiscapacidades()));
                
                modeloFormulario.desconectar();
                
                //Actualización del objeto paciente
                paciente.setDiagnostico(diagnostico);
                paciente.setComentario(ventana.getTextComentario().getText());
                paciente.setEstaAtendido(true);
            } catch (SQLException ex) {
               JOptionPane.showMessageDialog(ventana.getJPanelFormulario(),ex,"ERROR DE BASE DE DATOS",    JOptionPane.ERROR_MESSAGE);
            }
            CardLayout paletas = (CardLayout)ventana.getLayout();            
            paletas.show(ventana, "card3");
          }else JOptionPane.showMessageDialog(ventana.getJPanelFormulario(),"Debe introducir un diagnóstico antes de guardar","ATENCION",    JOptionPane.WARNING_MESSAGE);
//          else{
//              ventana.setTextLabelAvisoDiagnostico("Debes introducir un diagnostico");
//          
//          }
      }
      if (evento.getSource()== ventana.getButtonFotaCam()){
            IniciarCamara iniciarCamara = new IniciarCamara(arrayFotos);
      }
      
      if (evento.getSource()== ventana.getButtonAddRowMedicinas()){
            ventana.addRowNullTableModelMedicinas();
      }
      
      if (evento.getSource()== ventana.getButtonDeleteRowMedicinas()){
            ventana.deleteRowTableModelMedicinas();
      }
      if (evento.getSource()== ventana.getButtonAddRowCuras()){
            ventana.addRowNullTableModelCuras();
      }
      
      if (evento.getSource()== ventana.getButtonDeleteRowCuras()){
            ventana.deleteRowTableModelCuras();
      }
      if (evento.getSource()== ventana.getButtonAddRowOtros()){
            ventana.addRowNullTableModelOtros();
      }
      
      if (evento.getSource()== ventana.getButtonDeleteRowOtros()){
            ventana.deleteRowTableModelOtros();
      }
      
      
      if (evento.getSource()== ventana.getButtonPruebas()){
            try {
                ArrayList<Mensaje> listaP = new ArrayList();
                int t, i=0;
                pruebas.conectar();
                t=pruebas.getAllPruebas(listaP);
                Mensaje[] listaP2 = new Mensaje[t];
                Iterator iterador = listaP.listIterator();
                while( iterador.hasNext() ) {
                    listaP2[i] = (Mensaje) iterador.next();
                   //System.out.println("a: "+listaP2[i].getPath());
                    i++;
                 }
                ventana.setlistaPruebasModel(listaP2);
                 ventana.setTextLabelAviso("");
                
                CardLayout paletas = (CardLayout)ventana.getLayout();
                paletas.show(ventana,"card9");
            } catch (SQLException ex) {
            }
      }
      // Panel Historial
      if (evento.getSource()==ventana.getButtonHistorialAtras()){
          ventana.limpiarTablaHistorialPruebas();
          ventana.limpiarTablaHistorialDiagnosticos();
          ventana.limpiarTablaHistorialCuras();
          ventana.limpiarTablaHistorialMedicamentos();
          ventana.limpiarTablaHistorialOtros();
          ventana.limpiarTablaDiagnosticosCuras();
          CardLayout paletas = (CardLayout)ventana.getLayout();
          paletas.show(ventana,"cardFormularioGenerico");
          ventana.getJTabbedPaneHistorialDiagnosticos().setVisible(false);
      }
      if (evento.getSource()== ventana.getButtonHistorial()){          
          
          try{
              modeloHistorial.conectar();
              
              ventana.setListModelAlergias(modeloHistorial.getAlergias(paciente.getDNI(),paciente.getNSS()));
              ventana.setListModelDiscapacidades(modeloHistorial.getDiscapacidades(paciente.getDNI(),paciente.getNSS()));
              ventana.addRowTableModelHistorialCuras(modeloHistorial.getCuras(paciente.getDNI(),paciente.getNSS()));
              ventana.addRowTableModelHistorialPruebas(modeloHistorial.getPruebas(paciente.getDNI(),paciente.getNSS()));
              ventana.addRowTableModelHistorialDiagnosticos(modeloHistorial.getDiagnosticos(paciente.getDNI(),paciente.getNSS()));
              ventana.addRowTableModelHistorialMedicamentos(modeloHistorial.getMedicamentos(paciente.getDNI(),paciente.getNSS()));
              ventana.addRowTableModelHistorialOtros(modeloHistorial.getOtros(paciente.getDNI(),paciente.getNSS()));
              //System.out.println(ventana.getDNIFormulario().substring(5));
              //ventana.addRowTableModelHistorialDiagnosticos(modeloHistorial.getDiagnosticos(ventana.getDNIFormulario().substring(5),ventana.getNSSFormulario().substring(5)));
              
              modeloHistorial.desconectar();
          }catch (SQLException ex) {
            Logger.getLogger(Controller.class.getName()).log(Level.SEVERE, null, ex);
          }
          CardLayout paletas = (CardLayout)ventana.getLayout();
          paletas.show(ventana,"cardHistorial");
      }
      if (evento.getSource()==ventana.getButtonImprimir()){
          ventana.formatoImpresionPanelFormulario(true);
          Imprime imprime = new Imprime(ventana.getPanelFormularioGenerico());
          ventana.formatoImpresionPanelFormulario(false);
      }
      
      
      
      //PANEL SOLICITARPRUEBAS
      
      if (evento.getSource()== ventana.getButtonCancelarPuebas()){
          
          CardLayout paletas = (CardLayout)ventana.getLayout();
          paletas.show(ventana,"cardFormularioGenerico");
      }
       if (evento.getSource()== ventana.getButtonAceptarPrueba()){
          if(!ventana.getJListaPruebas().isSelectionEmpty()){  
           Mensaje m=(Mensaje)ventana.getJListaPruebasModel().getElementAt(ventana.getJListaPruebas().getSelectedIndex());
             String prueba=m.getMensaje();
          
            int prioridad=ventana.getComboBoxPrioridad().getSelectedIndex()+1;
          
            String comentarioPrueba=ventana.getTextAreaComentarioPrueba().getText();
            try {
                pruebas.setPruebaSolicitada(paciente.getDNI(), paciente.getNSS(), m.getMensaje(), prioridad, comentarioPrueba, medico.getIdmedico());
            } catch (SQLException ex) {
                ex.printStackTrace();
            }
          
            CardLayout paletas = (CardLayout)ventana.getLayout();
            paletas.show(ventana,"cardFormularioGenerico");
          }else{
              JOptionPane.showMessageDialog(ventana.getJPanelSolicitarPruebas(),"Debe de seleccionar una prueba","ATENCION",    JOptionPane.WARNING_MESSAGE);
          }
      }
      
    } //fin actionperformed
    
    
    
    public void autorrellenarFormulario(){
        switch(tf.getTipo()){
            case GENERICO: break;
            case CARDIACO: break;
            case ROTURA: break;
        }
    }
//    public MouseAdapter getMouseAdapterComboBoxTableMedicinas(){
//        mouseAdapter = new java.awt.event.MouseAdapter() {
//            @Override
//                        public void mouseClicked(java.awt.event.MouseEvent evt) {
//                            if(evt.getClickCount()==1){                                
//                                
//                                }
//                            }
//        }; 
//        return mouseAdapter;
//    }
    public MouseAdapter getMouseAdapterTableMedicinas(){
        mouseAdapter = new java.awt.event.MouseAdapter() {
            @Override
                        public void mouseClicked(java.awt.event.MouseEvent evt) {
                            if(evt.getClickCount()==1){
                                int fila = ventana.getJTableMedicinas().rowAtPoint(evt.getPoint());
                                int columna = ventana.getJTableMedicinas().columnAtPoint(evt.getPoint());
                                if (ventana.getTableModelMedicinas().getValueAt(fila, columna)==null){
                                    ventana.getComboBoxTableMedicinasMarca().removeAllItems();
                                }
                            }
                        }
        }; 
        return mouseAdapter;
    }
    public MouseAdapter getMouserAdapterCambiarMotivo(){
        mouseAdapter = new java.awt.event.MouseAdapter() {
            @Override
                        public void mouseClicked(java.awt.event.MouseEvent evt) {
                            if(evt.getClickCount()==1 && ventana.getListModelCambiarMotivo().getSize()>0) {
                                tf = (TipoFormulario) ventana.getListModelCambiarMotivo().getElementAt(ventana.getJListCambiarMotivo().getSelectedIndex());
                                ventana.setMotivo(tf.toString());
                                
                                CardLayout paletas = (CardLayout)ventana.getLayout(); 
                                paletas.show(ventana, "cardFormularioGenerico");
                            }
                        }
        }; 
        return mouseAdapter;
    }
     public MouseAdapter getMouserAdapterAgregarAlergia(){
        mouseAdapter = new java.awt.event.MouseAdapter() {
            @Override
                        public void mouseClicked(java.awt.event.MouseEvent evt) {
                            if(evt.getClickCount()==1 && ventana.getListModelAgregarAlergia().getSize()>0) {
                                String alergia = (String) ventana.getListModelAgregarAlergia().getElementAt(ventana.getJListAgregarAlergia().getSelectedIndex());
                                ventana.addListModelFormularioAlergias(alergia);
                                CardLayout paletas = (CardLayout)ventana.getLayout(); 
                                paletas.show(ventana, "cardFormularioGenerico");
                            }
                        }
        }; 
        return mouseAdapter;
    }
     public MouseAdapter getMouserAdapterAgregarDiscapacidad(){
        mouseAdapter = new java.awt.event.MouseAdapter() {
            @Override
                        public void mouseClicked(java.awt.event.MouseEvent evt) {
                            if(evt.getClickCount()==1 && ventana.getListModelAgregarDiscapacidad().getSize()>0) {
                                String discapacidad = (String) ventana.getListModelAgregarDiscapacidad().getElementAt(ventana.getJListAgregarDiscapacidad().getSelectedIndex());
                                ventana.addListModelFormularioDiscapacidades(discapacidad);
                                CardLayout paletas = (CardLayout)ventana.getLayout(); 
                                paletas.show(ventana, "cardFormularioGenerico");
                            }
                        }
        }; 
        return mouseAdapter;
    }
     
    public MouseAdapter getMouserAdapter(){
        mouseAdapter = new java.awt.event.MouseAdapter() {
            @Override
                        public void mouseClicked(java.awt.event.MouseEvent evt) {
                            if(evt.getClickCount()==1 && ventana.getListModel().getSize()>0) {
                                Mensaje m=(Mensaje)ventana.getListModel().getElementAt(ventana.getJList2().getSelectedIndex());
                                m.setPathIcono("/imagenes/Coffee.png");
                            try {
                                ventana.getJTextArea1().setText(gestorMail.getContenidoMail(ventana.getJList2().getSelectedIndex()));
                            } catch (MessagingException ex) {
                                Logger.getLogger(Controller.class.getName()).log(Level.SEVERE, null, ex);
                            } catch (IOException ex) {
                                Logger.getLogger(Controller.class.getName()).log(Level.SEVERE, null, ex);
                            }
                                ventana.getJTextArea1().setEditable(false);
                                ventana.getJTextArea1().setCaretPosition(0);
                            }
                        }
        }; 
        return mouseAdapter;
    }
    
    public MouseAdapter getMouseAdapterListaCitas(){
        mouseAdapter = new java.awt.event.MouseAdapter() {
            @Override
            public void mouseClicked(java.awt.event.MouseEvent evt){
//                if(evt.getClickCount()==1 && (ventana.getListModelCitas().getSize() > 0)){                   
//                    PacienteCita paciente = (PacienteCita)ventana.getListModelCitas().getElementAt(ventana.getJList1().getSelectedIndex());
//                        //ventana.setEtiqueta6("Nombre: " + paciente.getNombre() + "                      Motivo: " + paciente.getMotivo());
//                    try {
//                        modeloPacientes.conectar();
//                        if(modeloPacientes.existePaciente(paciente.getDNI(),paciente.getNSS())){
//                            ventana.setDatosPaciente(modeloPacientes.getDatosPaciente(paciente.getDNI(),paciente.getNSS()));
//                            Cita datosCita = new Cita(paciente.getDNI(),paciente.getNSS(),paciente.getMotivo(),paciente.getFecha());
//                            ventana.setDatosCita(datosCita);
//                            tf = new TipoFormulario(TipoFormulario.adecuarTipo(datosCita.getMotivo()));
//                            rellenarTablaTratamientosActuales(paciente.getDNI(),paciente.getNSS());
//                            
//                            //ventana.setDatosPersonales( modeloMedico.getDatosPersonales(ventana.getUsuario()));
//                           // ventana.setListModelCitas(modeloCitas.getCitas(modeloMedico.getIDMedico(ventana.getUsuario())));
//                            CardLayout paletas = (CardLayout)ventana.getLayout(); 
//                            paletas.show(ventana, "cardMotivo");
//                        }
//                        else ventana.setErrorLogin(); 
//                        modeloPacientes.desconectar();                        
//                    }catch (SQLException ex) {
//                        Logger.getLogger(Controller.class.getName()).log(Level.SEVERE, null, ex);
//                    }
//                }
                  if(evt.getClickCount()==2 && (ventana.getListModelCitas().getSize() > 0)){                   
                     paciente = (PacienteCita)ventana.getListModelCitas().getElementAt(ventana.getJList1().getSelectedIndex());
                        //ventana.setEtiqueta6("Nombre: " + paciente.getNombre() + "                      Motivo: " + paciente.getMotivo());
                    try {
                            modeloPacientes.conectar();
                            flag = false;
                            ventana.setTextLabelAvisoDiagnostico("");
                            ventana.setDatosPaciente(modeloPacientes.getDatosPaciente(paciente.getDNI(),paciente.getNSS()));
                            //ELIMINADO PANEL MOTIVO Cita datosCita = new Cita(paciente.getDNI(),paciente.getNSS(),paciente.getMotivo(),paciente.getFecha());
                            //ELIMINADO PANEL MOTIVO Cita ventana.setDatosCita(datosCita);
                            tf = new TipoFormulario(TipoFormulario.adecuarTipo(paciente.getMotivo()));
                            
                            // LIMPIAR EL FORMULARIO
                            ventana.clearTableModelTratamientosActuales();
                            ventana.clearTableModelMedicinas();
                            ventana.clearTableModelCuras();
                            ventana.clearTableModelOtros();
                            ventana.getListModelFormularioAlergias().clear();
                            ventana.getListModelFormularioDiscapacidades().clear();
                            ventana.getTextDiagnostico().setText("");
                            ventana.getTextExamenPreliminar().setText("");
                            arrayFotos.clear();
                            
                            //RELLENAR EL FORMULARIO
                            ventana.getTextComentario().setText(paciente.getComentario());
                            ventana.addRowTableModelTratamientosActuales("Medicinas", modeloFormulario.getMedicinas(paciente.getDNI(), paciente.getNSS()));
                            ventana.addRowTableModelTratamientosActuales("Curas", modeloFormulario.getCuras(paciente.getDNI(), paciente.getNSS()));
                            ventana.addRowTableModelTratamientosActuales("Otros", modeloFormulario.getOtros(paciente.getDNI(), paciente.getNSS()));
                            ventana.setListModelFormularioDiscapacidades(modeloFormulario.getDiscapacidades(paciente.getDNI(),paciente.getNSS()));
                            ventana.setListModelFormularioAlergias(modeloFormulario.getAlergias(paciente.getDNI(),paciente.getNSS()));
                            
                            flag = true;
                            modeloPacientes.desconectar();
                            autorrellenarFormulario();
                            
                            if(paciente.getEstaAtendido()){
                                ventana.getButton_Formulario_Guardar().setVisible(false);
                                ventana.getTextDiagnostico().setText(paciente.getDiagnostico());
                            } else ventana.getButton_Formulario_Guardar().setVisible(true);
                            //ventana.setDatosPersonales( modeloMedico.getDatosPersonales(ventana.getUsuario()));
                           // ventana.setListModelCitas(modeloCitas.getCitas(modeloMedico.getIDMedico(ventana.getUsuario())));
                            CardLayout paletas = (CardLayout)ventana.getLayout(); 
                            paletas.show(ventana, "cardFormularioGenerico");
                            
                        }
                                              
                    catch (SQLException ex) {
                        Logger.getLogger(Controller.class.getName()).log(Level.SEVERE, null, ex);
                    }
                }
                if(evt.getClickCount()==1 && (ventana.getListModelCitas().getSize() > 0)){                   
                    PacienteCita paciente = (PacienteCita)ventana.getListModelCitas().getElementAt(ventana.getJList1().getSelectedIndex());
                        //ventana.setEtiqueta6("Nombre: " + paciente.getNombre() + "                      Motivo: " + paciente.getMotivo());
                    Cita datosCita = new Cita(paciente.getDNI(),paciente.getNSS(),paciente.getMotivo(),paciente.getFecha());
                    ventana.setDatosCita(datosCita);
                    ventana.getPanelDatosCita().setVisible(true);  
                }
            }
        };        
        return mouseAdapter;
    }
        
    public MouseAdapter getMouseAdapterListaDiagnosticos(){
        mouseAdapter = new java.awt.event.MouseAdapter() {
            @Override
            public void mouseClicked(java.awt.event.MouseEvent evt){
                if(evt.getClickCount()==2)
                {
                    ventana.getJTabbedPaneHistorialDiagnosticos().setVisible(true);
                    ventana.limpiarTablaDiagnosticosCuras();
                    ventana.limpiarTablaDiagnosticosOtros();
                    ventana.limpiarTablaDiagnosticosMedicamentos();
                    
                    int fila = ventana.getJTableHistorialDiagnosticos().rowAtPoint(evt.getPoint());
                    //int col=ventana.getJTableHistorialDiagnosticos().get.getSelectedColumn();
                    //int col2=ventana.getJTableHistorialDiagnosticos().getSelectedRows();
                    //System.out.println(col);
                    //int columna = ventana.getJTableHistorialDiagnosticos().columnAtPoint(evt.getPoint());
                    String dato = (String) ventana.getJTableHistorialDiagnosticos().getValueAt(fila, 1);
                    try{
                        modeloHistorial.conectar();
                        
                        ventana.addRowTableModelDiagnosticosCuras(modeloHistorial.getDiagnosticosCuras(paciente.getDNI(), paciente.getNSS(), dato));
                        ventana.addRowTableModelDiagnosticosOtros(modeloHistorial.getDiagnosticosOtros(paciente.getDNI(), paciente.getNSS(), dato));
                        ventana.addRowTableModelDiagnosticosMedicamentos(modeloHistorial.getDiagnosticosMedicamentos(paciente.getDNI(), paciente.getNSS(), dato));
                        
                        modeloHistorial.desconectar();
                    }catch (SQLException ex) {
                    Logger.getLogger(Controller.class.getName()).log(Level.SEVERE, null, ex);
                }
                }   
                   
                /*try{
                    modeloHistorial.conectar();
                    if(evt.getClickCount()==2 && (ventana.vaciaLista(modeloHistorial.getDiagnosticos(paciente.getDNI(),paciente.getNSS())))==1){                   
                        System.out.println("exo doble clic");
                    }   
            ventana.setListModelAlergias(modeloHistorial.getAlergias(paciente.getDNI(),paciente.getNSS()));
              ventana.setListModelDiscapacidades(modeloHistorial.getDiscapacidades(paciente.getDNI(),paciente.getNSS()));
              ventana.addRowTableModelHistorialCuras(modeloHistorial.getCuras(paciente.getDNI(),paciente.getNSS()));
              ventana.addRowTableModelHistorialPruebas(modeloHistorial.getPruebas(paciente.getDNI(),paciente.getNSS()));
              ventana.addRowTableModelHistorialDiagnosticos());
              ventana.addRowTableModelHistorialMedicamentos(modeloHistorial.getMedicamentos(paciente.getDNI(),paciente.getNSS()));
              ventana.addRowTableModelHistorialOtros(modeloHistorial.getOtros(paciente.getDNI(),paciente.getNSS()));
           
                    modeloHistorial.desconectar();
                }catch (SQLException ex) {
                    Logger.getLogger(Controller.class.getName()).log(Level.SEVERE, null, ex);
                } */               
            }
        };
        return mouseAdapter;
   }
    public MouseAdapter getMouserAdapterES(){
        mouseAdapter = new java.awt.event.MouseAdapter() {
            @Override
                        public void mouseClicked(java.awt.event.MouseEvent evt) {
                            if(evt.getClickCount()==1){
                                ventana.mensajes=ResourceBundle.getBundle("panel1",Locale.getDefault()); 
                                ventana.setLabelIdioma(ventana.mensajes.getString("idioma"));
                                ventana.setLabelLogin(ventana.mensajes.getString("inicio"));
                                ventana.setLabelPass(ventana.mensajes.getString("contraseña"));
                                ventana.setLabelUser(ventana.mensajes.getString("usuario"));
                                ventana.userIncorrect=ventana.mensajes.getString("aviso"); 
                                ventana.setButtonExit(ventana.mensajes.getString("salir"));
                                ventana.setButton1(ventana.mensajes.getString("aceptar"));
                            }
                        }
        }; 
        return mouseAdapter;
    }
    public MouseAdapter getMouserAdapterUS(){
        mouseAdapter = new java.awt.event.MouseAdapter() {
            @Override
                        public void mouseClicked(java.awt.event.MouseEvent evt) {
                            if(evt.getClickCount()==1){
                                ventana.mensajes=ResourceBundle.getBundle("panel1",Locale.US); 
                                ventana.setLabelIdioma(ventana.mensajes.getString("idioma"));
                                ventana.setLabelLogin(ventana.mensajes.getString("inicio"));
                                ventana.setLabelPass(ventana.mensajes.getString("contraseña"));
                                ventana.setLabelUser(ventana.mensajes.getString("usuario"));
                                ventana.userIncorrect=ventana.mensajes.getString("aviso");
                                ventana.setButtonExit(ventana.mensajes.getString("salir"));
                                ventana.setButton1(ventana.mensajes.getString("aceptar"));
                            }
                        }
        }; 
        return mouseAdapter;
    }
           
}
/*
 * public MouseAdapter getMouserAdapterAgregarDiscapacidad(){
        mouseAdapter = new java.awt.event.MouseAdapter() {
            @Override
                        public void mouseClicked(java.awt.event.MouseEvent evt) {
                            if(evt.getClickCount()==1 && ventana.getListModelAgregarDiscapacidad().getSize()>0) {
                                String discapacidad = (String) ventana.getListModelAgregarDiscapacidad().getElementAt(ventana.getJListAgregarDiscapacidad().getSelectedIndex());
                                ventana.addListModelFormularioDiscapacidades(discapacidad);
                                CardLayout paletas = (CardLayout)ventana.getLayout(); 
                                paletas.show(ventana, "cardFormularioGenerico");
                            }
                        }
        }; 
        return mouseAdapter;
    }
 */
